`
https://leetcode.cn/problems/h-index-ii/
`

/**
 * @param {number[]} citations
 * @return {number}
 */
var hIndex = function (citations) {
  let left = 0, right = citations.length + 1
  while (left + 1 < right) {
    // 循环不变量
    // left 的回答一定为 是
    // right 的回答一定为 否
    const mid = left + Math.floor((right - left) / 2)
    // 要有至少 h 篇论文分别被引用了至少 h 次
    // 非降序下，后面 mid 本必须至少被引用 mid 次
    if (citations.at(-mid) >= mid) {
      left = mid
    } else {
      right = mid
    }
  }
  return left
};